package com.whfc.wxmp.api.fim.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fim.dto.*;
import com.whfc.fim.param.FimResultEditParam;
import com.whfc.fim.param.FimSearchParam;

import java.util.Date;

/**
 * @author : qzexing
 * @version : 1.0
 * @date : 2020-09-09 18:17
 */
public interface WxFimResultService {

    /**
     * 记录列表
     *
     * @param pageNum      页码
     * @param pageSize     每页数量
     * @param deptId       组织机构ID
     * @param algCheckType 报警类型
     * @return PageData<FimResultDTO>
     */
    PageData<FimResultDTO> list(Integer pageNum, Integer pageSize, Integer deptId, Integer state,Integer algCheckType, Date startTime, Date endTime);


    /**
     * 获取报警记录详情
     *
     * @param resultId 报警记录ID
     * @return 报警记录
     */
    FimResultDTO detail(Integer resultId);


    /**
     * 报警记录按天统计排序
     *
     * @param deptId 组织机构ID
     * @param date   日期
     * @return 报警记录分析DTO
     */
    @Deprecated
    FimResultAnalysisDTO analysisRank(Integer deptId, Date date);


    /**
     * 处理报警记录
     *
     * @param editParam 处理报警记录参数
     */
    void handle(FimResultEditParam editParam);

    /**
     * 智能监控报警记录分析(按天)
     *
     * @param deptId
     * @param date
     * @return
     */
    ListData<FimResultRateContDTO> analysisByDate(Integer deptId, Date date);
    /**
     * 智能监控报警记录分析(按天)
     *
     * @param deptId
     * @return
     */
    FimWxResultRateContDTO analysisByDateWX(Integer deptId, Date startTime,Date endTime,Integer state);


    /**
     * 智能监控报警记录分析(按月)
     *
     * @param deptId
     * @param month
     * @return
     */
    FimWarnAnalysisDTO analysisByMonth(Integer deptId, Date month);

    /**
     * 获取报警记录列表(按月)
     *
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param algCheckType
     * @param handleStatus
     * @param month
     * @return
     */
    PageData<FimResultDTO> monthDatalist(Integer pageNum, Integer pageSize, Integer deptId, Integer algCheckType, Integer handleStatus, Date month);

    /**
     * 获取报警数
     *
     * @param deptId
     * @param algCheckType
     * @param month
     * @return
     */
    FimWarnNumDTO getWarnNum(Integer deptId, Integer algCheckType, Date month);

    /**
     * 智能监控报警类型数据统计
     *
     * @param param
     * @return
     */
    FimWarnStatisticsDetailDTO getFimWarnStatisticsDetail(FimSearchParam param);
}
